package javabook.ch08;

/*
 * 사용자는 새로운 예외를 정의하여 사용할 수 있다
새로운 예외는 Exception 클래스로부터 상속되어 생성되어야 한다

class UserException1 extends Exception   {
  // 사용자 정의 예외는 Exception 클래스로부터 상속
  public UserException1(String message)   { // 생성자 메소드
    super(message);  
   // 상위 클래스인 Exception 클래스의 생성자를 호출하여 
   // 예외 객체 생성 
  }
}

 */
public class ExceptionByUser {

	  public static void main(String args[]) {
	    try {
	      int a = Integer.parseInt(args[0]);
	      if(a % 2 == 0) {
	        throw new UserException1("사용자 정의 예외 1");
	      }
	      else {
	        throw new UserException2("사용자 정의 예외 2");
	      }
	    }    
	    catch(UserException1 e) {
	      System.out.println("UserException1 처리 루틴 : ");
	      System.out.println(e + " 발생");
	    }
	    catch(UserException2 e) {
	      System.out.println("UserException2 처리 루틴 : ");
	      System.out.println(e + " 발생");
	    }
	    catch(Exception e) {
	      System.out.println("모든 예외 처리 루틴 : ");
	      System.out.println(e + " 발생");
	    }
	  }
	}

	
	class UserException1 extends Exception {  
	  // 사용자 정의 예외는 Exception 클래스로부터 상속
	  public UserException1(String message) {
	    super(message);
	  }
	}
	
	
	class UserException2 extends Exception {
	  public UserException2(String message) {
	    super(message);
	  }
	}

/*
모든 예외 처리 루틴 : 
java.lang.ArrayIndexOutOfBoundsException: 0 발생
*/
	
